package controllers

import (
	"context"
	"gitverse.ru/synapse/kubelatte/pkg/kubeapi"
	"gitverse.ru/synapse/kubelatte/pkg/observability/logs"
	"gitverse.ru/synapse/kubelatte/pkg/util"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/kubernetes"
)

var kubeClient kubernetes.Interface

func CheckNamespace(name string, selector *util.NamespaceSelector) bool {
	if selector == nil {
		logs.Warn("Namespace selector is not set")
		return false
	}

	var clt kubernetes.Interface
	if kubeClient != nil {
		clt = kubeClient
	} else {
		clt = kubeapi.GetClient()
	}

	ns, err := clt.CoreV1().Namespaces().Get(context.Background(), name, v1.GetOptions{})
	if err != nil {
		logs.Errorf("Can't fetch namespace data, error %s", err.Error())
		return false
	}
	return selector.MatchNamespace(ns)
}
